import os

def rename_audio_files(base_dir, is_audio):
    # 自动提取人名：路径的最后一级文件夹名
    person_name = os.path.basename(base_dir)
    
    # 子文件夹与速度的映射
    folder_speed_map = {
        '高速': 'h',   # 高速
        '低速': 'l',   # 低速
        '正常': 'n'    # 正常
    }

    # 初始化全局编号
    global_index = 1

    # 存储所有重命名后的音频文件路径
    renamed_files = []

    # 遍历每个子文件夹
    for folder_cn, speed in folder_speed_map.items():
        folder_path = os.path.join(base_dir, folder_cn)
        
        if not os.path.exists(folder_path):
            print(f"警告：文件夹 {folder_path} 不存在，跳过。")
            continue
        
        # 获取该文件夹下所有文件
        for filename in os.listdir(folder_path):
            file_path = os.path.join(folder_path, filename)
            
            if not os.path.isfile(file_path):
                continue
            
            # 只处理常见音频格式（可添加其他格式）
            if not filename.lower().endswith(('.wav', '.mp3', '.flac', '.ogg')):
                continue
            
            # 构造新文件名
            ext = os.path.splitext(filename)[1]
            if speed == 'h':
                new_name = f"{global_index}_{person_name}_moan_audio_{speed}{ext}"
            else:
                new_name = f"{global_index}_{person_name}_{is_audio}_{speed}{ext}"
            new_path = os.path.join(folder_path, new_name)
            
            # 重命名文件
            os.rename(file_path, new_path)
            print(f"已重命名: {filename} -> {new_name}")
            
            # 编号递增
            global_index += 1
            # 记录重命名后的文件路径
            renamed_files.append(new_path)

    # 创建以人名为名的文件夹
    new_folder_path = os.path.join(base_dir, person_name)
    os.makedirs(new_folder_path, exist_ok=True)

    # 移动所有重命名后的音频文件到新文件夹
    for file_path in renamed_files:
        new_file_path = os.path.join(new_folder_path, os.path.basename(file_path))
        os.rename(file_path, new_file_path)
        print(f"已移动: {os.path.basename(file_path)} 到 {new_folder_path}")

    print("重命名和移动完成！")

# ==== 主程序入口 ====
if __name__ == "__main__":
    # 用户输入路径
    base_dir = input("请输入目标文件夹完整路径: ").strip()
    is_audio = 'moan_audio'

    if not os.path.isdir(base_dir):
        print("错误：路径无效或不是文件夹！")
    else:
        rename_audio_files(base_dir,is_audio)